<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- Promise用于解决异步编程 -->
    <div id="box"></div>
    <script>
        // Promise对象是一个构造函数，用来生成Promise实例
        var box = document.getElementById("box");
        function loadImageAsync(url){
            const promise = new Promise(function(resolve,reject){
                //异步处理：消耗时间的代码
                const image = new Image(); //创建image对象
                image.src = url;
                image.onload = function(){
                     resolve(image);
                }
                image.onerror = function(){
                    reject(new Error("Could not load image at" + url))
                }
            })
            return promise;
        }

        var promise =  loadImageAsync("https://tse2-mm.cn.bing.net/th/id/OIP-C.ZkoPhpKfJwsvGmpm8RsragHaFp?pid=ImgDet&rs=1");
        promise.then(function(data){
            //成功
            //appendChild() 方法是 JavaScript DOM（文档对象模型）操作中的一个常用方法，
            //用于将一个节点添加到指定父节点的子节点列表的末尾。
            box.appendChild(data);
        },function(error){
            //失败
            box.innerHTML = "图片加载失败"
        })

    </script>
</body>
</html>